fn main() -> anyhow::Result<()> {
    let v = vec![1, 2, 3];
    let v2 = vec![2; 10];
    println!("v1: {:?}\nv2: {:?}", v, v2);

    let v3: Vec<i32> = vec![
        "1".parse()?,
        "2".parse()?,
        "3".parse()?,
        "4".parse()?,
        "5".parse()?,
    ];

    println!("v3: {:?}", v3);

    Ok(())
}
// 常见的表达式语法
// $x: expr  表示匹配1个表达式an expression
// $x: ty    表示匹配1个类型 a type
// $x: ident 表示匹配1个标识符an identifier(变量名称、函数名称、类型名称)
// $x: tt    表示匹配1个词条树 a single token tree

// #[macro_export]
// macro_rules! xvec {
//     () => {
//         Vec::new()
//     };
//     ($elem: expr; $n: expr) => {
//         std::vec::from_elem($elem, $n);
//     };
//     // $($x: expr),+匹配1个表达式, 使用","分隔且至少包含1个参数
//     // $(,)?匹配",", 其中"?"表示匹配0个或者1个
//     ($($x: expr),+ $(,)?) => {
//         {
//             let mut temp_vec = Vec::new();
//             $(
//                 temp_vec.push($x);
//             )*
//             temp_vec
//         }
//     };
// }
